/* 
 * File:   ThreadMngRfidCard.h
 * Author: batista
 *
 * Created on 17 de Março de 2013, 17:45
 */

#ifndef THREADMNGRFIDCARD_H
#define	THREADMNGRFIDCARD_H
#include <vector>
#include <cstring>
#include <string>
#include <iostream>
#include <ucommon/ucommon.h>
//
#include "TimeUtil.h"
#include "DirFile.h"
#include "ShowMsg.h"
#include "Card.h"
#include "DbConn.h"

using namespace std;
using std::string;

using namespace UCOMMON_NAMESPACE;

class ThreadMngRfidCard : private ShowMsg, public JoinableThread {
public:
    ThreadMngRfidCard();
    virtual ~ThreadMngRfidCard();
    //
    void run(void);
    //
    DbConn* getDbconn() const {
        return dbconn;
    }

    void setDbconn(DbConn* dbconn) {
        this->dbconn = dbconn;
    }
    
    long getTimeout_attend() const {
        return timeout_attend;
    }

    void setTimeout_attend(long timeout_attend) {
        this->timeout_attend = timeout_attend;
    }

    DirFile* getDirfl() const {
        return dirfl;
    }

    void setDirfl(DirFile* dirfl) {
        this->dirfl = dirfl;
    }

    //
private:
    /**
     * Metodo Responsavel por desmembrar os
     * dados para o cartão e setar os dados
     * para ser aplicada a regra de negócio.
     * @param ncard
     * @return 
     */
    Card* setCardToApplyRule(Card *ncard);  

    /**
     * Metodo responsavel por aplicar
     * a regra de negocio para o cartao
     * e adicionar na base de dados.
     */
    void runApplyRulesForRfidCard(Card *ncard);   
    
    /**
     * Metodo responsavel por pegar a opção
     * para aplicar para o evento do Cartao.
     * @param ncard
     * @return 
     */
    int  getOptionForApply(Card *ncard);

    
    /**
     * Metodo responsavel por adicionar
     * todos os Cartoes que ainda nao
     * foram cadatrados para o PostgreSQL
     * @param ncard
     */
    void AddNewCardToDatabase(Card *ncard);
    
    
    //    
private:
    DbConn *dbconn;
    TimeUtil *tmut;
    DirFile *dirfl;
    Card *card;
    //
    long timeout_attend;    
};

#endif	/* THREADMNGRFIDCARD_H */

